/*
  学习目标：生命周期- 卸载阶段
*/

import React, { Component } from 'react';

export default class App extends Component {
  state = {
    isShow: true,
  };

  render() {
    const { isShow } = this.state;
    return (
      <div>
        <button onClick={() => this.setState({ isShow: !isShow })}>
          点我切换
        </button>
        <hr />
        {isShow && <Child />}
      </div>
    );
  }
}

let timerId;
class Child extends React.Component {
  // 挂载后开启定时器
  componentDidMount() {
    timerId = setInterval(() => {
      console.log('💥💥定时器再跑  ----->  ');
    }, 500);
  }

  // 本质： 类似vue中beforeDestroy
  // 场景： 做清除的动作， 清定时器等
  componentWillUnmount() {
    console.log('我要被卸载了  ----->  ');
    clearInterval(timerId);
  }

  // 卸载时，关闭定时器
  render() {
    return <div>我是子组件 </div>;
  }
}
